package com.woniuxy.cloud.userassembly.service;

import com.woniuxy.cloud.api.dto.LoginDto;
import com.woniuxy.cloud.api.dto.RoleDto;
import com.woniuxy.cloud.api.dto.UserDto;
import com.woniuxy.cloud.api.param.DepositLevelParam;
import com.woniuxy.cloud.api.param.RoleIdAndAreaParam;
import com.woniuxy.cloud.dto.BaseDto;
import com.woniuxy.cloud.userassembly.entity.User;
import com.baomidou.mybatisplus.extension.service.IService;
import com.woniuxy.cloud.userassembly.param.SaveUserParam;
import com.woniuxy.cloud.userassembly.param.SaveUserRoleParam;
import com.woniuxy.cloud.userassembly.param.UpdateMyselfParam;
import com.woniuxy.cloud.userassembly.param.UserPageAndByKeyParam;

import java.util.List;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author 周川雄
 * @since 2022-01-26
 */
public interface UserService extends IService<User> {
    /**
     * 登录
     *
     * @param username
     * @return
     */
    LoginDto login(String username);

    UserDto SaveUser(SaveUserParam sup);

    BaseDto<UserDto> listUsers(UserPageAndByKeyParam upp);

    boolean saveUserRole(SaveUserRoleParam arp);

    boolean removeUserByIds(List<Integer> ids);


    boolean UpdateMyselfParam(UpdateMyselfParam ump);

    UserDto findUserById(Integer userId);

    UserDto updateUserDepositLevel(DepositLevelParam param);

    List<UserDto> listUserByRoleIdAndArea(RoleIdAndAreaParam param);

    List<RoleDto> findRoleByUserId(Integer userId);
}
